The present invention relates to a method and system for transforming a state-based application into an executable code sequence and, more particularly, to a method and system for transforming a state-table exported from a state-based development environment into an executable code sequence.
The area of media and telephony applications, also referred to as computer telephony, has expanded to meet the growing demand for advanced telephony applications in telecommunications networks. The area of computer telephony includes a number of application-specific devices, many of which have proprietary implementations. One such device is an interactive voice response (IVR) system, which enables the development of interactive voice applications, such as voice mail.
As the number of media and telephony applications has grown, media servers have emerged to interface with multiple application-specific devices and provide a development environment in which developers can create applications that access various devices such as IVR systems, facsimile servers, and e-mail gateways. Through the use of a media server, various computer telephony applications can share media resources.
Many IVR systems (e.g., IBM's DirectTalk/6000 IVR system) operate in a state-driven environment in which an application is defined by a sequence of states, where each state represents an action, and the result of the action determines the next state the application will process. Most state-based IVR systems have a service creation tool that allows a developer to define a service or application by graphically or textually creating a sequence of states. For example, a developer may create applications for IBM's DirectTalk/6000 IVR system using a state-table editor (textual) or an iconic editor (graphical). The output of such a service creation tool is a sequence of states (state-table) in an interpretable form. Thus, a state-based application created by one of these service creation tools is usually passed through an interpreter when executed.
The disadvantages of a state-based IVR application that must be interpreted are twofold. First, execution of an application in state-table form is less efficient than execution of a machine executable application because the state-table must be passed through an interpreter before execution. Interpretation of a state-table is slower than binary execution of the same state-table. Second, the state-table form of an application may not be executable by a media server since it may not be compatible with its runtime environment, e.g., where the service creation tool of one media server is used to produce an application to be run on a different media server.